package arreglos;
import accesoarchivos.ProductoArchivo;

import entidades.Producto;
import java.util.ArrayList;





public class ProductoArrayList {

    ArrayList<Producto> listadoProductos = null;
    ProductoArchivo productoArchivo = null;

    public ProductoArrayList() {

    	listadoProductos = new ArrayList<Producto>();
    	productoArchivo = new ProductoArchivo();
        listadoProductos = productoArchivo.LeerArchivoProducto();

    }
    
    public int AgregarProducto(Producto producto) {
        int codigo = 0;
        try {  
        	   codigo = ObtenerCodigoParaInsertar();
                producto.setCodigo(codigo);
        	    listadoProductos.add(producto);
                productoArchivo.EscribirArchivoProducto(listadoProductos);
           
        } catch (Exception ex) {
        }
        return codigo;
    }

    public ArrayList<Producto> ListadoProductos() {       
        return listadoProductos;
    }



    private int ObtenerCodigoParaInsertar() {
        int codigo = 0;
        try {
            ArrayList<Producto> arraylist = new ArrayList<Producto>();
            arraylist = listadoProductos;

            int numeroClientes = arraylist.size();
            if (numeroClientes == 0) {
                codigo = 1;
            } else {

                for (Producto producto : listadoProductos) {
                    codigo = producto.getCodigo();
                }
                codigo = codigo + 1;
            }
        } catch (Exception ex) {
        }
        return codigo;
    }


    public Producto BuscarDatosProductoPorCodigo(Producto producto) {     
      
        try {
        	
            ArrayList<Producto> arraylist = new ArrayList<Producto>();
            arraylist = listadoProductos;

            for (Producto product : arraylist) {
                if (product.getCodigo()==producto.getCodigo()) {
                	return product;  
                  
                }
            }
        } catch (Exception ex) {
        }
        return new Producto();
    }

    public int ModificarProducto(Producto producto) {
        int codigo = 0;
        try {
                              
          
                int indiceArreglo = 0;
                for (Producto entidad : listadoProductos) {
                    if (entidad.getCodigo()== producto.getCodigo()) {
                    	listadoProductos.remove(indiceArreglo);
                    	listadoProductos.add(indiceArreglo, producto);
                        break;
                    }
                    indiceArreglo++;
                }
                productoArchivo.EscribirArchivoProducto(listadoProductos);
          
            
        } catch (Exception ex) {
        }
        return codigo;
    }
    
    public int EliminarProducto(Producto producto) {
        int codigo = 0;
        try {

            int indiceArreglo = 0;
            for (Producto entidad : listadoProductos) {

                if (entidad.getCodigo()==producto.getCodigo()) {                
                    
                	listadoProductos.remove(indiceArreglo);
                    codigo = 1;
                   
                    break;
                }
                indiceArreglo++;
            }
            productoArchivo.EscribirArchivoProducto(listadoProductos);           

        } catch (Exception ex) {
        }
        return codigo;
    }


}
